Question 1: How many breweries are present in each state?


Pull Data and Images
#Beer Data
beers = read.csv("/Users/elyjiahpotter/Desktop/DDS - Project 1/Beers.csv")

#Brewery Data
breweries = read.csv("/Users/elyjiahpotter/Desktop/DDS - Project 1/Breweries.csv")

# Budweiser Logo=
img = "/Users/elyjiahpotter/Desktop/DDS - Project 1/bud_logo copy 2.jpeg"
img2 = "/Users/elyjiahpotter/Desktop/DDS - Project 1/bud_logo copy 2.jpeg"



Aggregate Breweries and Plot Data
# How many breweries?

state_data = breweries %>%
  group_by(State) %>%
  summarize(Count = n()) %>%
  arrange(Count)

#Plot


p = state_data %>%
  ggplot(aes(x = reorder(State,Count), y = Count)) +
  geom_bar(stat = "identity",
           fill = "dodgerblue4",
                 alpha = 0.95) +
  theme(axis.text.x = element_text(angle = 90, 
                                   vjust = 0.5, 
                                   hjust = 1,
                                   size = 8)) +
  theme(panel.grid.major = element_blank(),
          panel.grid.minor = element_blank()) +
  ggtitle("Breweries per State") +
  theme(plot.title = element_text(size = 20, face = "bold")) +
  theme(axis.text=element_text(size = 10),
        axis.title=element_text(size=12,face="bold")) +
  xlab("US States") +
  ylab("Number of Breweries") +
  geom_text(aes(label = Count, vjust = -0.75), size = 2.5, color = "black")

ggbackground(p, img)



Question 2: Merge beer data with the breweries data. Print the first 6 observations and the last six observations to check the merged file.

#Create Key
colnames(beers)[5] = "Brew_ID"

#Join data on key
beer_data = inner_join(breweries, beers, by = "Brew_ID")

#Rename column names and make brewery a factor
colnames(beer_data) = c("Brew_ID", "Brewery", "City", "State", "Beer", "Beer_ID", "ABV", "IBU", "Style", "Ounces")
beer_data$Brewery = factor(beer_data$Brewery)

#Print first and last 6 rows
head(beer_data, n = 6)
##   Brew_ID            Brewery        City State          Beer Beer_ID   ABV IBU
## 1       1 NorthGate Brewing  Minneapolis    MN  Get Together    2692 0.045  50
## 2       1 NorthGate Brewing  Minneapolis    MN Maggie's Leap    2691 0.049  26
## 3       1 NorthGate Brewing  Minneapolis    MN    Wall's End    2690 0.048  19
## 4       1 NorthGate Brewing  Minneapolis    MN       Pumpion    2689 0.060  38
## 5       1 NorthGate Brewing  Minneapolis    MN    Stronghold    2688 0.060  25
## 6       1 NorthGate Brewing  Minneapolis    MN   Parapet ESB    2687 0.056  47
##                                 Style Ounces
## 1                        American IPA     16
## 2                  Milk / Sweet Stout     16
## 3                   English Brown Ale     16
## 4                         Pumpkin Ale     16
## 5                     American Porter     16
## 6 Extra Special / Strong Bitter (ESB)     16
tail(beer_data, n = 6)
##      Brew_ID                       Brewery          City State
## 2405     556         Ukiah Brewing Company         Ukiah    CA
## 2406     557       Butternuts Beer and Ale Garrattsville    NY
## 2407     557       Butternuts Beer and Ale Garrattsville    NY
## 2408     557       Butternuts Beer and Ale Garrattsville    NY
## 2409     557       Butternuts Beer and Ale Garrattsville    NY
## 2410     558 Sleeping Lady Brewing Company     Anchorage    AK
##                           Beer Beer_ID   ABV IBU                   Style Ounces
## 2405             Pilsner Ukiah      98 0.055  NA         German Pilsener     12
## 2406  Heinnieweisse Weissebier      52 0.049  NA              Hefeweizen     12
## 2407           Snapperhead IPA      51 0.068  NA            American IPA     12
## 2408         Moo Thunder Stout      50 0.049  NA      Milk / Sweet Stout     12
## 2409         Porkslap Pale Ale      49 0.043  NA American Pale Ale (APA)     12
## 2410 Urban Wilderness Pale Ale      30 0.049  NA        English Pale Ale     12



Question 3: Address the missing values in each column.

#Find missing items
gg_miss_var(beer_data) 
## Warning: It is deprecated to specify `guide = FALSE` to remove a guide. Please
## use `guide = "none"` instead.

#A large portion of beers do not have IBU listed, so we will create a separate data set for IBU and ABV comparisons
full_beer_data = beer_data

beer_data = beer_data %>%
  filter(!is.na(IBU) & !is.na(ABV))

gg_miss_var(beer_data)
## Warning: It is deprecated to specify `guide = FALSE` to remove a guide. Please
## use `guide = "none"` instead.



Question 4: Compute the median alcohol content and international bitterness unit for each state. Plot a bar chart to compare.


Compute Medians
med_chart = beer_data %>%
  group_by(State) %>%
  summarize("Median_ABV" = median(ABV), 
            "Median_IBU" = median(IBU))

med_chart
## # A tibble: 50 × 3
##    State Median_ABV Median_IBU
##    <chr>      <dbl>      <dbl>
##  1 " AK"     0.057        46  
##  2 " AL"     0.06         43  
##  3 " AR"     0.04         39  
##  4 " AZ"     0.0575       20.5
##  5 " CA"     0.058        42  
##  6 " CO"     0.065        40  
##  7 " CT"     0.061        29  
##  8 " DC"     0.059        47.5
##  9 " DE"     0.055        52  
## 10 " FL"     0.062        55  
## # … with 40 more rows



Plot Data
p_abv = med_chart %>%
  ggplot(aes(x = reorder(State,Median_ABV), y = Median_ABV)) +
  geom_bar(stat = "identity",
           fill = "dodgerblue4",
           color = "dodgerblue4",
           alpha = 0.95,
           width = .75) +
  theme(axis.text.x = element_text(angle = 90, 
                                   vjust = 0.5, 
                                   hjust = 1)) +
  theme(panel.grid.major = element_blank(),
          panel.grid.minor = element_blank()) +
  #ggtitle("Median ABV by State") +
  theme(plot.title = element_text(size = 20, face = "bold")) +
  theme(axis.text=element_text(size = 10),
        axis.title=element_text(size=12,face="bold")) +
  xlab("State") +
  ylab("ABV")  +
  coord_cartesian(ylim=c(0.04,0.075)) 

ggbackground(p_abv, img)

p_abv = med_chart %>%
  ggplot(aes(x = reorder(State,Median_IBU), y = Median_IBU)) +
  geom_bar(stat = "identity",
           fill = "dodgerblue4",
           color = "dodgerblue4",
           alpha = 0.95,
           width = .75) +
  theme(axis.text.x = element_text(angle = 90, 
                                   vjust = 0.5, 
                                   hjust = 1)) +
  theme(panel.grid.major = element_blank(),
          panel.grid.minor = element_blank()) +
  #ggtitle("Median IBU by State") +
  theme(plot.title = element_text(size = 20, face = "bold")) +
  theme(axis.text=element_text(size = 10),
        axis.title=element_text(size=12,face="bold")) +
  xlab("State") +
  ylab("IBU") +
  coord_cartesian(ylim=c(20,60))

ggbackground(p_abv, img)



Question 5: Which state has the maximum alcoholic (ABV) beer? Which state has the most bitter (IBU) beer?


Address Question
max_chart = beer_data %>%
  group_by(State) %>%
  summarize("Max_ABV" = max(ABV), 
            "Max_IBU" = max(IBU))

#Max ABV
max_chart[which.max(max_chart$Max_ABV),]
## # A tibble: 1 × 3
##   State Max_ABV Max_IBU
##   <chr>   <dbl>   <int>
## 1 " KY"   0.125      80
#Max IBU
max_chart[which.max(max_chart$Max_IBU),]
## # A tibble: 1 × 3
##   State Max_ABV Max_IBU
##   <chr>   <dbl>   <int>
## 1 " OR"   0.085     138


Plot Data
p = max_chart %>%
  ggplot(aes(x = Max_IBU, y = Max_ABV, color = State)) +
  geom_point() +
  coord_cartesian(ylim=c(0.04,.13)) +
  ggtitle("Max IBU and ABV by State") +
  xlab("Max ABV") +
  ylab("Max IBU")

ggplotly(p)



Question 6: Comment on the summary statistics and distribution of the ABV variable.


Summarize Data
summary(beer_data$ABV)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.02700 0.05000 0.05700 0.05991 0.06800 0.12500


Plot Data
p_abv = beer_data %>%
  ggplot(aes(x = ABV)) +
  geom_histogram(stat = "count",
                 fill = "dodgerblue4",
           color = "dodgerblue4",
           alpha = 0.95) +
  theme(panel.grid.major = element_blank(),
          panel.grid.minor = element_blank()) +
  ggtitle("ABV Distribution") +
  theme(plot.title = element_text(size = 20, face = "bold")) +
  theme(axis.text=element_text(size = 10),
        axis.title=element_text(size=12,face="bold")) +
  xlab("ABV") +
  ylab("Count")
## Warning: Ignoring unknown parameters: binwidth, bins, pad
ggbackground(p_abv, img)

p_abv = beer_data %>%
  ggplot(aes(x = ABV)) +
  geom_boxplot(fill = "dodgerblue4",
           color = "dodgerblue4",
           alpha = 0.95) +
  theme(panel.grid.major = element_blank(),
          panel.grid.minor = element_blank()) +
  ggtitle("ABV Distribution") +
  theme(plot.title = element_text(size = 20, face = "bold")) +
  theme(axis.text=element_text(size = 10),
        axis.title=element_text(size=12,face="bold")) +
  xlab("ABV") +
  ylab("Count")

ggbackground(p_abv, img)


Findings

  • The distribution of ABV is right skewed with a mean of 0.05991 and a median of 0.057.

  • 50% of the data is nested between the values .05 and .068



Question 7: Is there an apparent relationship between the bitterness of the beer and its alcoholic content? Draw a scatter plot. Make your best judgment of a relationship and EXPLAIN your answer.


Plot Data
p = beer_data %>%
  ggplot(aes(x = IBU, y = ABV)) +
  geom_point(position = "jitter",
           color = "dodgerblue4",
           color = "dodgerblue4",
           alpha = 0.95) +
  geom_smooth(method = lm, color = "darkgoldenrod1") +
  theme(panel.grid.major = element_blank(),
          panel.grid.minor = element_blank()) +
  ggtitle("IBU vs ABV") +
  theme(plot.title = element_text(size = 20, face = "bold")) +
  theme(axis.text=element_text(size = 10),
        axis.title=element_text(size=12,face="bold")) +
  xlab("IBU") +
  ylab("ABV")
## Warning: Duplicated aesthetics after name standardisation: colour
ggbackground(p, img)
## `geom_smooth()` using formula 'y ~ x'


Findings

  • There appears to be a positive correlation between bitterness (IBU) and alcohol content (ABV).

  • In general, as IBU increases, we also see an increase in ABV. This can be seen with higher clarity with the included linear model regression line



Question 8: Budweiser would also like to investigate the difference with respect to IBU and ABV between IPAs (India Pale Ales) and other types of Ale (any beer with “Ale” in its name other than IPA) - Use KNN to inestigate and provide statistical evidence.


Filter Data
ales = beer_data %>%
  mutate(Ale = case_when(
    grepl("IPA",Style)|grepl("India Pale",Style) ~ "IPA",
    !grepl("IPA",Style)&grepl("Ale",Style) ~ "Ale")) %>% 
  filter(!is.na(Ale))


Plot Data and Create Initial Model
splitPerc = 0.75

trainInices = sample(1:dim(ales)[1], round(splitPerc * dim(ales)[1]))

train = ales[trainInices,]
test = ales[-trainInices,]

p_ale = ales %>%
  ggplot(aes(x = IBU, y = ABV, color = Ale)) +
  geom_point(position = "jitter") +
  ggtitle("Ales - IBU vs ABV") +
  theme(plot.title = element_text(size = 20, face = "bold")) +
  theme(axis.text=element_text(size = 10),
        axis.title=element_text(size=12,face="bold")) +
  theme(panel.grid.major = element_blank(),
        panel.grid.minor = element_blank())


ggbackground(p_ale, img2)

# K = 3
classifications = knn(train[,c(7,8)], test[,c(7,8)], train$Ale, prob = TRUE, k = 3)
table(classifications, test$Ale)
##                
## classifications Ale IPA
##             Ale 121  10
##             IPA  26  80
confusionMatrix(table(classifications,test$Ale))
## Confusion Matrix and Statistics
## 
##                
## classifications Ale IPA
##             Ale 121  10
##             IPA  26  80
##                                          
##                Accuracy : 0.8481         
##                  95% CI : (0.796, 0.8913)
##     No Information Rate : 0.6203         
##     P-Value [Acc > NIR] : 1.044e-14      
##                                          
##                   Kappa : 0.6883         
##                                          
##  Mcnemar's Test P-Value : 0.01242        
##                                          
##             Sensitivity : 0.8231         
##             Specificity : 0.8889         
##          Pos Pred Value : 0.9237         
##          Neg Pred Value : 0.7547         
##              Prevalence : 0.6203         
##          Detection Rate : 0.5105         
##    Detection Prevalence : 0.5527         
##       Balanced Accuracy : 0.8560         
##                                          
##        'Positive' Class : Ale            
## 



Normalize Data to Account for Scale Issue
ale_scaled = data.frame(ZABV = scale(ales$ABV), ZIBU = scale(ales$IBU), Ale = ales$Ale)



Find Ideal K Value
iterations = 1000 
numks = 100

masterAcc = matrix(nrow = iterations, ncol = numks)
  
for(j in 1:iterations)
{
accs = data.frame(accuracy = numeric(numks), k = numeric(numks))
trainIndices = sample(1:dim(ale_scaled)[1],round(splitPerc * dim(ale_scaled)[1]))
train = ale_scaled[trainIndices,]
test = ale_scaled[-trainIndices,]
for(i in 1:numks)
{
  classifications = knn(train[,c(1,2)],test[,c(1,2)],train$Ale, prob = TRUE, k = i)
  table(classifications,test$Ale)
  CM = confusionMatrix(table(classifications,test$Ale))
  masterAcc[j,i] = CM$overall[1]
}
}
MeanAcc = colMeans(masterAcc)
plot(seq(1,numks,1),MeanAcc, type = "l")


Findings
  • Ideal K value is 20



Test New Model on Normalized Dataset with ideal K value
ale_scaled = data.frame(ZABV = scale(ales$ABV), ZIBU = scale(ales$IBU), Ale = ales$Ale)


splitPerc = 0.70

trainInices = sample(1:dim(ale_scaled)[1], round(splitPerc * dim(ale_scaled)[1]))

train = ale_scaled[trainInices,]
test = ale_scaled[-trainInices,]

# K = 20
classifications = knn(train[,c(1,2)], test[,c(1,2)], train$Ale, prob = TRUE, k = 20)
table(classifications, test$Ale)
##                
## classifications Ale IPA
##             Ale 150  21
##             IPA  14  99
confusionMatrix(table(classifications,test$Ale))
## Confusion Matrix and Statistics
## 
##                
## classifications Ale IPA
##             Ale 150  21
##             IPA  14  99
##                                           
##                Accuracy : 0.8768          
##                  95% CI : (0.8328, 0.9126)
##     No Information Rate : 0.5775          
##     P-Value [Acc > NIR] : <2e-16          
##                                           
##                   Kappa : 0.7455          
##                                           
##  Mcnemar's Test P-Value : 0.3105          
##                                           
##             Sensitivity : 0.9146          
##             Specificity : 0.8250          
##          Pos Pred Value : 0.8772          
##          Neg Pred Value : 0.8761          
##              Prevalence : 0.5775          
##          Detection Rate : 0.5282          
##    Detection Prevalence : 0.6021          
##       Balanced Accuracy : 0.8698          
##                                           
##        'Positive' Class : Ale             
## 



Run Random Dataset through Model and Illustrate Predictions
classifications = knn(ale_scaled[,c(1,2)], random_beer[,c(1,2)], ale_scaled$Ale, k = 20)


ABV_class = data.frame(table(random_beer$ABV,classifications))
colnames(ABV_class) = c("ABV", "Classification", "Freq")
IBU_class = data.frame(table(random_beer$IBU,classifications))
colnames(IBU_class) = c("IBU", "Classification", "Freq")

#Illustrate distribution of predictions

ABV_class$ABV = as.numeric(as.matrix(ABV_class)[,1]) 

p_abv = ABV_class %>%
  ggplot(aes(x = ABV, y = Freq, fill = Classification)) +
  stat_smooth(geom = "area", method = "loess", span = .7, alpha = .5) +
  ggtitle("ABV Classification Distribution") +
  xlim(-1.2,1.2) +
  theme(plot.title = element_text(size = 20, face = "bold")) +
  theme(axis.text=element_text(size = 10),
        axis.title=element_text(size=12,face="bold")) +
  theme(panel.grid.major = element_blank(),
        panel.grid.minor = element_blank())

ggbackground(p_abv, img2)
## `geom_smooth()` using formula 'y ~ x'
## Warning: Removed 62 rows containing non-finite values (stat_smooth).

IBU_class$IBU = as.numeric(as.matrix(IBU_class)[,1]) 

p_ibu = IBU_class %>%
  ggplot(aes(x = IBU, y = Freq, fill = Classification)) +
  stat_smooth(geom = "area", method = "loess", span = .7, alpha = .5) +
  ylim(0,80) +
  xlim(-1,1) +
  ggtitle("IBU Classification Distribution") +
  theme(plot.title = element_text(size = 20, face = "bold")) +
  theme(axis.text=element_text(size = 10),
        axis.title=element_text(size=12,face="bold")) +
  theme(panel.grid.major = element_blank(),
        panel.grid.minor = element_blank())

ggbackground(p_ibu, img2)
## `geom_smooth()` using formula 'y ~ x'
## Warning: Removed 120 rows containing non-finite values (stat_smooth).



Run a t-Test on original Data: Address Assumptions
#Normality

p = ales %>%
  ggplot(aes(x = IBU, fill = Ale)) +
  geom_histogram(bins = 20) +
  facet_wrap(~Ale) +
  theme(panel.grid.major = element_blank(),
        panel.grid.minor = element_blank()) +
  ggtitle("Testing for IBU Normality")
ggbackground(p, img)

p = ales %>%
  ggplot(aes(x = ABV, fill = Ale)) +
  geom_histogram(bins = 20) +
  facet_wrap(~Ale) +
  theme(panel.grid.major = element_blank(),
        panel.grid.minor = element_blank()) +
  ggtitle("Testing for ABV Normality")
ggbackground(p, img)

# Equal Variance

p = ales %>%
  ggplot(aes(x = IBU, fill = Ale)) +
  geom_boxplot() +
  theme(panel.grid.major = element_blank(),
        panel.grid.minor = element_blank()) +
  ggtitle("Testing for IBU Variance")
ggbackground(p, img)

p = ales %>%
  ggplot(aes(x = ABV, fill = Ale)) +
  geom_boxplot() +
  theme(panel.grid.major = element_blank(),
        panel.grid.minor = element_blank()) +
  ggtitle("Testing for ABV Variance")
ggbackground(p, img)


Findings
  • Distributions are both right skewed, but fairly normal

  • Variance is not identical, but not drastically different

  • Independence may be assumed

  • We will continue with a Welch’s t-Test



t-Test
t.test( x = ales %>% 
          filter(Ale == "IPA") %>%
          select(ABV),
        y = ales %>% 
          filter(Ale == "Ale") %>%
          select(ABV),
        alternative = "two.sided",
        var.equal = FALSE,
        conf.level = 0.95)
## 
##  Welch Two Sample t-test
## 
## data:  ales %>% filter(Ale == "IPA") %>% select(ABV) and ales %>% filter(Ale == "Ale") %>% select(ABV)
## t = 16.207, df = 801.73, p-value < 2.2e-16
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  0.01101906 0.01405596
## sample estimates:
##  mean of x  mean of y 
## 0.06909367 0.05655616
t.test( x = ales %>% 
          filter(Ale == "IPA") %>%
          select(IBU),
        y = ales %>% 
          filter(Ale == "Ale") %>%
          select(IBU),
        alternative = "two.sided",
        var.equal = FALSE,
        conf.level = 0.95)
## 
##  Welch Two Sample t-test
## 
## data:  ales %>% filter(Ale == "IPA") %>% select(IBU) and ales %>% filter(Ale == "Ale") %>% select(IBU)
## t = 30.156, df = 805.05, p-value < 2.2e-16
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  35.10601 39.99441
## sample estimates:
## mean of x mean of y 
##  71.88354  34.33333


ABV Conclusion
  • We have sufficient evidence to assert that the average alcohol content of an IPA is greater than another type of ale (p-value < 0.0001, Welch’s two sided t-test). The 95% confidence interval for the difference in averages is (0.011, 0.014)
IBU Conclusion
  • We have sufficient evidence to assert that the average bitterness of an IPA is greater than another type of ale (p-value < 0.0001, Welch’s two sided t-test). The 95% confidence interval for the difference in IBU averages is roughly (35, 40)

Question 9: Find one other useful inference from the data that you feel Budweiser may be able to find value in. You must convince them why it is important and back up your conviction with appropriate statistical evidence.

Plot South / Southeast Only

plot_usmap(include = .south_region, data = beermap, values = "Breweries", color = "tan3") + 
  scale_fill_continuous(
    low = "white", high = "darkolivegreen4", name = "Breweries", label = scales::comma) +
  theme(legend.position = "right") +
  labs(title = "IPA Brewers: Southeastern States") + 
  theme(panel.background = element_rect(color = "gray", fill = "lightsteelblue3")) +
  theme(plot.title = element_text(size = 20, face = "bold")) +
  geom_point(data = Cville, aes(x = long.1, y = lat.1), shape = 21, color = "black", fill = "firebrick2", size = 3) +
  geom_text(data = Cville, aes(x = long.1, y = lat.1, label = names), hjust = 0.5, vjust = 1.5, nudge_x = 4, color = "black") +
  geom_point(data = Wburg, aes(x = long.1, y = lat.1), shape = 21, color = "black", fill = "firebrick2", size = 3) +
  geom_text(data = Wburg, aes(x = long.1, y = lat.1, label = names), hjust = 0.5, vjust = 1.5, nudge_x = 4, color = "black") +
  geom_point(data = Houston, aes(x = long.1, y = lat.1), shape = 21, color = "black", fill = "firebrick2", size = 3) +
  geom_text(data = Houston, aes(x = long.1, y = lat.1, label = names), hjust = 0.5, vjust = 1.5, nudge_x = 4, color = "black") +
  geom_point(data = Jville, aes(x = long.1, y = lat.1), shape = 21, color = "black", fill = "firebrick2", size = 3) +
  geom_text(data = Jville, aes(x = long.1, y = lat.1, label = names), hjust = 0.5, vjust = 1.5, nudge_x = 4, color = "black") 



Findings
  • The introduction of an IPA in a brewery location like Cartersville, GA would be ideal. IPAs are wildly underrepresented in this market.



Conclusion

Given the datasets Beers.csv and Breweries.csv we were tasked to analyze several aspects of the data.

Our first task was to determine a brewery count by State. We have demonstrated this with a summary of the data as a histogram for a visual reference. We found that there were large numbers of breweries in the western region of the United States and that the top ten states with the highest brewery counts accounted for over 50% of total breweries.

A deeper analysis required that the two datasets provided be merged. The Brewery_ID column from the beers.csv dataset provided the best option to complete this.

After merging the datasets, missing or NA values were removed to effectively study any relationships between the data points. We noted that in doing so, the highest ABV value was removed from our analysis.

Working with the merged and complete values dataset, we computed the median ABV and IBU for each state and presented the results in a bar graph.

It was found that Oregon’s Astoria Brewing Company out of Astoria has the Bitter Bitch Imperial IPA with 138 IBUs and that Kentucky’s Against the Grain Brewery out of Louisville has the London Balling English Barleywine with an ABV of 12.5%.

We then showed summary statistics of the ABV values. There was a slight right skew to the values but Budweiser’s ABV proved close to the median.

Showing a scatterplot of ABV vs IBU provided strong evidence of a linear relationship. We fit a linear regression line to emphasize our findings.

Basing further discovery on the linear relationship, an optimized KNN model was created to classify IPAs vs other Ales in the dataset. The model favored IPAs as the higher ABV and IBU beer. This relationship is crucial when considering the explosive popularity of IPAs in recent years.

Outside exploration demonstrated massive potential for an IPA market in the southeast region of the United States. Consumption of alcoholic beverages is relatively high in Georgia and a regional exploration of breweries proved little IPA options, especially when disregarding Florida. With these considerations, it is highly recommended that Budweiser utilize existing resources in the region to test an IPA; an extremely desirable beer in a region that is relatively untapped.